---
title: DECR
description: The Redis DECR command is used to decrement the numeric value stored in a key by one.
sidebar:
  order: 4
---

import { Code } from '@astrojs/starlight/components'

Decrement the numeric value stored in key by one.

If the key does not exist, the key's value will first be initialized to 0, and then the DECR operation will be performed.

If the value contains the wrong type, or the string value cannot be represented as a number, an error is returned.

The value of this operation is limited to 64-bit signed number representation.

### Redis Native Command Syntax

<Code code={`DECR key`} lang="bash" />

**Parameter Description**

- **key**: The key to decrement

### Detailed Explanation

The DECR command is an atomic operation and can be used to implement counter functionality. It is an operation for string type, but requires the string to be parseable as an integer.

## Redisun Usage

In redisun, the DECR command is implemented through the DecrCommand class and the decr method in the Redisun class.

### Basic Usage

<Code code={`Redisun redisun = Redisun.create(options -> {
    options.setAddress("redis://127.0.0.1:6379");
});

// Decrement the key's value
long result = redisun.decr("mycounter");
System.out.println("Counter value: " + result);

// Asynchronous version
CompletableFuture<Long> future = redisun.asyncDecr("mycounter");
future.thenAccept(value -> System.out.println("Async counter value: " + value));`} lang="java" />

## Notes

1. If the key does not exist, it will be automatically created and initialized to 0
2. If the key exists but is not a numeric string, an exception will be thrown
3. The value range is limited to 64-bit signed integer range
4. The operation is atomic and suitable for concurrent scenarios

## References

- [Redis DECR Command Official Documentation](https://redis.io/commands/decr/)